package com.zpself.module.算法练习.String;

/**
 * @author By ZengPeng
 * @Description 给你一个字符串数组 words ，只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
 *
 * 美式键盘 中：
 * 第一行由字符 "qwertyuiop" 组成。
 * 第二行由字符 "asdfghjkl" 组成。
 * 第三行由字符 "zxcvbnm" 组成。
 *
 * 示例 1：
 * 输入：words = ["Hello","Alaska","Dad","Peace"]
 * 输出：["Alaska","Dad"]
 *
 * @date in  2021/2/05 19:13
 * @Modified By
 */
public class 力扣_500_键盘行 {
    public static void main(String[] args) {
        String[] str = new String[]{"Hello","Alaska","Dad","Peace"};
        System.out.println(myAnswer(str).toString());
    }

    public static  String[] myAnswer(String[] words){
        String[] tool = new String[]{"qwertyuiop","asdfghjkl","zxcvbnm"};

        int k=words.length;//新数组大小
        for (int i=0;i<words.length;i++) {
            String current = words[i].toLowerCase();
            String hang = tool[0];
            for (String s : tool) {
                if (s.indexOf(current.charAt(0)) > -1) {
                    hang = s;
                    break;
                }
            }
            for (char c : current.toCharArray()) {
                //一个个字符比较
                if (hang.indexOf(c) == -1) {
                    words[i]=null;
                    k--;
                    break;
                }
            }
        }
        //将不为null的值转移到新数组中
        String[] data = new String[k];
        for (int i=0,j=0;i<words.length; i++) {
            if(words[i]!=null)
                data[j++]=words[i];
        }
        return data;
    }
}
